﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//using System.Runtime.InteropServices;

namespace quanlynhasach
{
    public partial class frmNhapHang : Form
    {
        Connection db = new Connection();
        ChiTietPhieuNhap CTPN = new ChiTietPhieuNhap();
        HoaDonNhap hdn = new HoaDonNhap();
        HangHoa Sach = new HangHoa();
        Linksql.HangHoasql hh = new Linksql.HangHoasql();
        quanlynhasach.Linksql.nhaphangsql nhsql = new Linksql.nhaphangsql();
        public frmNhapHang()
        {
            InitializeComponent();
            textBoxGiaMua.Text = "0";
            textBoxGiaSale.Text = "0";
            rdTatCa.Checked = true;
        }

        private ChiTietPhieuNhap GetData()
        {
            ChiTietPhieuNhap CTPN = new ChiTietPhieuNhap();
            CTPN.SoCTPN = textBoxSoCTPN.Text;
            CTPN.MaPN = textBoxMaPhieuNhap.Text;
            CTPN.MaSachPN = textBoxMaHang.Text;
            CTPN.SoLuongPN = int.Parse(textBoxSoLuong.Text);
            CTPN.DonGiaPN = int.Parse(textBoxGiaMua.Text);
            CTPN.ThanhTienPN = textBoxThanhTien.Text;
            CTPN.DonViPN = cmbDonVi.Text;
            CTPN.Thue = int.Parse(textBoxVAT.Text);
            CTPN.GiaBan = int.Parse(textBoxGiaSale.Text);
            return CTPN;
        }

        private HoaDonNhap GetDataPN()
        {
            HoaDonNhap HDN = new HoaDonNhap();
            HDN.MaHDN = textBoxMaPhieuNhap.Text;
            HDN.MaNhaCungCap = textBoxTenNCC.Text;
            HDN.MaNVHDN = textBoxTenNV.Text;
            textBoxThanhToan.Text = "0";
            HDN.TongTienHDN = 0;
            return HDN;
        }

        private HangHoa GetDataSach()
        {
            HangHoa h = new HangHoa();
            h.MaHangHoa = textBoxMaHang.Text;
            h.TenHangHoa = cmbTenHang.Text;
            h.GiaBan = textBoxGiaSale.Text;
            h.GiaMua = textBoxGiaMua.Text;
            h.MaNCC = textBoxTenNCC.Text;
            h.MaTL = "N/A";
            h.DonVi = cmbDonVi.Text;
            h.SoLuong = 0;
            h.TenTG = "";
            h.Thue = textBoxVAT.Text;
            return h;
        }

        public void Enable(bool a)
        {
            btnThemCTPN.Enabled = a;
            btnXoaCTPN.Enabled = a;
            btnHuyCTPN.Enabled = a;
            btnSuaCTPN.Enabled = a;
            btnTongTien.Enabled = a;
        }


        private void Sum()
        {
            try
            {
                
                CTPN.SoLuongPN = int.Parse(textBoxSoLuong.Text);
                CTPN.DonGiaPN = int.Parse(textBoxGiaMua.Text);
                int ThanhTien = CTPN.SoLuongPN * CTPN.DonGiaPN;
                textBoxThanhTien.Text = ThanhTien.ToString();

            }
            catch
            {
                MessageBox.Show("Kiểm Tra Lại Số Lượng Đã Nhập");
            }


        }




        private void frmNhapHang_Load(object sender, EventArgs e)
        {
            this.Dock = DockStyle.Fill;
            textBoxMaNV.Text = frmMain.user.ToUpper();
            textBoxSoCTPN.Text = nhsql.SearchDaTaGridSCTPN();
            textBoxMaPhieuNhap.Text = nhsql.SearchDaTaGridPN();
            cmbTenHang.ResetText();
            cmbNCC.ResetText();
            DataTable dt = db.getDS("Select TenSach From Sach");
            int Count;
            Count = dt.Rows.Count;
            for (int i = 0; i < Count; i++)
            {
                string stringcomboBox = dt.Rows[i]["TenSach"].ToString();
                if (stringcomboBox != "N/A")
                    cmbTenHang.Items.Add(stringcomboBox);
            }
            dt.Clear();
            dt = db.getDS("Select MaNhaCungCap From NhaCungCap");
            Count = dt.Rows.Count;
            for (int i = 0; i < Count; i++)
            {
                string stringcomboBox = dt.Rows[i]["MaNhaCungCap"].ToString();
                cmbNCC.Items.Add(stringcomboBox);
            }
            cmbNCC.DropDownStyle = ComboBoxStyle.DropDownList;
            cmbNCC.Text = "N/A";
            cmbTenHang.Text = "N/A";
            cmbDonVi.DropDownStyle = ComboBoxStyle.DropDownList;
            cmbDonVi.Text = "Quyen";
            dtgdNhapHang.DataSource = nhsql.getCTPN();

        }

        private void btnThemCTPN_Click(object sender, EventArgs e)
        {
            textBoxSoCTPN.Text = nhsql.SearchDaTaGridSCTPN();
            if (textBoxCheck())
            {
                if (!nhsql.check(cmbTenHang.Text))
                {
                    try
                    {
                        HangHoa h = new HangHoa();
                        h = GetDataSach();
                        hh.ThemHangHoa(h);
                    }
                    catch
                    {
                        MessageBox.Show("Không Thể Tạo Phiếu Cho Sách Đã Mua");
                    }
                }

                ChiTietPhieuNhap pn = GetData();
                if (int.Parse(textBoxSoLuong.Text) > 0)
                {
                    try
                    {
                        if (nhsql.ThemCTPN(pn))
                        {
                            MessageBox.Show("Thêm Thành Công");
                            dtgdNhapHang.DataSource = nhsql.getCTPN(textBoxMaPhieuNhap.Text);
                            btnTongTien.Enabled = true;
                            int a = 0;
                            for (int i = 0; i < dtgdNhapHang.RowCount; i++)
                                a += int.Parse(dtgdNhapHang.Rows[i].Cells["ThanhTien"].Value.ToString());
                            textBoxTongCong.Text = a.ToString();
                        }
                    }
                    catch
                    {
                        MessageBox.Show("");
                    }
                }
                else
                    MessageBox.Show("Số Lượng Phải Lớn Hơn 0");
                textBoxSoCTPN.Text = nhsql.SearchDaTaGridSCTPN();
            }
        }

        private void btnSuaCTPN_Click(object sender, EventArgs e)
        {
            ChiTietPhieuNhap BH = GetData();
            if (int.Parse(textBoxSoLuong.Text) > 0)
            {
                try
                {
                    if (nhsql.SuaCTPN(BH))
                    {
                        MessageBox.Show("Sửa Thành Công");
                        dtgdNhapHang.DataSource = nhsql.getCTPN(textBoxMaPhieuNhap.Text);
                        int a = 0;
                        for (int i = 0; i < dtgdNhapHang.RowCount; i++)
                            a += int.Parse(dtgdNhapHang.Rows[i].Cells["ThanhTien"].Value.ToString());
                        textBoxTongCong.Text = a.ToString();
                    }
                }
                catch
                {
                    MessageBox.Show("");
                }


            }
            else
                MessageBox.Show("Số Lượng Phải Lớn Hơn 0");
        }

        private void btnXoaCTPN_Click(object sender, EventArgs e)
        {
            if (dtgdNhapHang.RowCount > 0)
            {
                if (MessageBox.Show("Bạn Có Chắc Muốn Xóa mặt hàng " + cmbTenHang.Text + " Không ?", "Xóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    if (nhsql.XoaCTPN(textBoxSoCTPN.Text))
                    {
                        MessageBox.Show("Xóa Thành Công!");
                    }
                    else
                        MessageBox.Show("Không Thể Xóa");
                }
            }
            dtgdNhapHang.DataSource = nhsql.getCTPN(textBoxMaPhieuNhap.Text);
            int a = 0;
            for (int i = 0; i < dtgdNhapHang.RowCount; i++)
                a += int.Parse(dtgdNhapHang.Rows[i].Cells["ThanhTien"].Value.ToString());
            textBoxTongCong.Text = a.ToString();
        }

        private void btnHuyCTPN_Click(object sender, EventArgs e)
        {

                int i = int.Parse(textBoxSoCTPN.Text.Substring(4)) - 1;
                while (true)
                {
                    string a = textBoxMaPhieuNhap.Text;
                    if (nhsql.CheckCTPN("CTPN" + i.ToString(),a))
                    {
                        nhsql.XoaCTPN("CTPN" + i.ToString());
                    }
                    else
                        break;
                    i--;
                }
                try
                {
                    nhsql.XoaPN(textBoxMaPhieuNhap.Text);
                }
                catch

                { }
                dtgdNhapHang.DataSource = nhsql.getCTPN();
                rdTatCa.Enabled = true;
                rdTatCa.Checked = true;
            
        }

        private void btnTongTien_Click(object sender, EventArgs e)
        {
            int a = 0;
            for (int i = 0; i < dtgdNhapHang.RowCount; i++)
            {
                a += int.Parse(dtgdNhapHang.Rows[i].Cells["ThanhTien"].Value.ToString());
                HangHoa h = new HangHoa();
                h.MaHangHoa = dtgdNhapHang.Rows[i].Cells["MaSach"].Value.ToString();
                DataTable dt = new DataTable();
                dt = db.getDS("Select * From Sach Where MaSach = '" + h.MaHangHoa + "'");
                h.TenHangHoa = dt.Rows[0]["TenSach"].ToString();
                h.GiaBan = dtgdNhapHang.Rows[i].Cells["GiaBan"].Value.ToString();
                h.GiaMua = dtgdNhapHang.Rows[i].Cells["DonGia"].Value.ToString();
                h.MaNCC = dtgdNhapHang.Rows[i].Cells["NhaCungCap"].Value.ToString();
                h.SoLuong = int.Parse(dt.Rows[0]["SoLuong"].ToString());
                h.TenTG = dt.Rows[0]["TenTG"].ToString();
                dt = db.getDS("select TenTL from TheLoai where MaTheLoai = '" + dt.Rows[0]["MaTL"].ToString() + "'");
                if (dt.Rows.Count > 0)
                    h.MaTL = dt.Rows[0]["TenTL"].ToString();
                h.DonVi = dtgdNhapHang.Rows[i].Cells["DonVi"].Value.ToString();
                h.Thue = dtgdNhapHang.Rows[i].Cells["Thue"].Value.ToString();
                hh.SuaHangHoa(h);
            }
            HoaDon hd = new HoaDon();
            hd.source(2, textBoxMaPhieuNhap.Text);
            hd.ShowDialog();
            btnTaoHoaDon.Enabled = true;
            btnThemCTPN.Enabled = false;
            textBoxMaPhieuNhap.Text = nhsql.SearchDaTaGridPN();
            textBoxSoCTPN.Text = nhsql.SearchDaTaGridSCTPN();
            dtgdNhapHang.DataSource = nhsql.getCTPN(textBoxMaPhieuNhap.Text);
            rdTatCa.Enabled = true;
            rdTatCa.Checked = true;
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cmbTenHang_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (nhsql.check(cmbTenHang.Text))
            {
                DataTable dt = new DataTable();
                dt = db.getDS("Select * From Sach Where TenSach = '" + cmbTenHang.Text + "'");
                textBoxMaHang.Text = dt.Rows[0]["MaSach"].ToString();
                textBoxSoLuong.Text = dt.Rows[0]["SoLuong"].ToString();
                textBoxGiaMua.Text = dt.Rows[0]["GiaMua"].ToString();
                textBoxGiaSale.Text = dt.Rows[0]["GiaBan"].ToString();
                textBoxVAT.Text = dt.Rows[0]["Thue"].ToString();
                cmbDonVi.Text = dt.Rows[0]["DonVi"].ToString();
                Sum();
            }
            else
            {
                textBoxMaHang.Text = hh.SearchDaTaGrid();
                textBoxSoLuong.Text = "0";
                textBoxGiaMua.Text = "5000";
                textBoxGiaSale.Text = "5000";
                Sum();
            }
        }

        private void textboxSoLuong_TextChanged(object sender, EventArgs e)
        {
            int i;
            if (!int.TryParse(textBoxSoLuong.Text, out i))
            {
                textBoxThanhTien.Text = "0";
                if(textBoxSoLuong.Text != "")
                    MessageBox.Show("Số Lượng Phải Là Số Nguyên");
                return;
            }
            Sum();

        }

        private void rdTatCa_CheckedChanged(object sender, EventArgs e)
        {
            textBoxThanhToan.Enabled = false;
            textBoxNo.Enabled = false;
            textBoxVAT.Enabled = false;
            textBoxGiaMua.Enabled = false;
            textBoxGiaSale.Enabled = false;
            cmbDonVi.Enabled = false;
            cmbTenHang.Enabled = false;
            textBoxSoLuong.Enabled = false;
            cmbNCC.Enabled = false;
            btnTaoHoaDon.Enabled = false;
            dtgdNhapHang.DataSource = nhsql.getCTPN();
            Enable(false);
        }

        private void rdHienTai_CheckedChanged(object sender, EventArgs e)
        {
            textBoxTongCong.Text = "0";
            textBoxPhaiTra.Text = "0";
            textBoxThanhToan.Enabled = true;
            textBoxNo.Enabled = true;
            cmbNCC.Enabled = true;
            textBoxMaNV.Text = frmMain.user.ToUpper();
            btnTaoHoaDon.Enabled = true;
            textBoxSoCTPN.Text = nhsql.SearchDaTaGridSCTPN();
            textBoxMaPhieuNhap.Text = nhsql.SearchDaTaGridPN();
            dtgdNhapHang.DataSource = nhsql.getCTPN(textBoxMaPhieuNhap.Text);
            Enable(true);
            btnHuyCTPN.Enabled = false;
            btnThemCTPN.Enabled = false;
            btnTongTien.Enabled = false;
            if (!btnTaoHoaDon.Enabled)
                btnThemCTPN.Enabled = true;
        }


        private void dtgdNhapHang_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            int Rs = e.RowIndex;
            textBoxMaPhieuNhap.Text = dtgdNhapHang.Rows[Rs].Cells["MaPhieuNhap"].Value.ToString();
            textBoxSoCTPN.Text = dtgdNhapHang.Rows[Rs].Cells["ID"].Value.ToString();
            textBoxMaNV.Text = nhsql.GetMaNV(dtgdNhapHang.Rows[Rs].Cells["MaNV"].Value.ToString());
            textBoxTenNV.Text = dtgdNhapHang.Rows[Rs].Cells["MaNV"].Value.ToString();
            textBoxMaHang.Text = dtgdNhapHang.Rows[Rs].Cells["MaSach"].Value.ToString();
            DataTable dt = new DataTable();
            dt = db.getDS("Select * From Sach Where MaSach = '" + textBoxMaHang.Text + "'");
            cmbTenHang.Text = dt.Rows[0]["TenSach"].ToString();
            textBoxSoLuong.Text = dtgdNhapHang.Rows[Rs].Cells["SoLuong"].Value.ToString();
            textBoxGiaMua.Text = dtgdNhapHang.Rows[Rs].Cells["DonGia"].Value.ToString();
            textBoxGiaSale.Text = dtgdNhapHang.Rows[Rs].Cells["GiaBan"].Value.ToString();
            textBoxThanhTien.Text = dtgdNhapHang.Rows[Rs].Cells["ThanhTien"].Value.ToString();
            textBoxTenNCC.Text = dtgdNhapHang.Rows[Rs].Cells["NhaCungCap"].Value.ToString();
            cmbNCC.Text = nhsql.GetNCC(dtgdNhapHang.Rows[Rs].Cells["NhaCungCap"].Value.ToString());
            textBoxVAT.Text = dtgdNhapHang.Rows[Rs].Cells["Thue"].Value.ToString();
            cmbDonVi.Text = dtgdNhapHang.Rows[Rs].Cells["DonVi"].ToString();
            if (rdTatCa.Checked == true)
            {
                dt = nhsql.getCTPN(textBoxMaPhieuNhap.Text);
                int a = 0;
                for (int i = 0; i < dt.Rows.Count; i++)
                    a += int.Parse(dt.Rows[i]["ThanhTien"].ToString());
                textBoxTongCong.Text = a.ToString();
                dt = db.getDS("Select * From PhieuNhap Where MaPhieuNhap = '" + textBoxMaPhieuNhap.Text + "'");
                textBoxPhaiTra.Text = dt.Rows[0]["TongTien"].ToString();
            }
        }

        private void btnTaoHoaDon_Click(object sender, EventArgs e)
        {
            cmbDonVi.Enabled = true;
            cmbTenHang.Enabled = true;
            textBoxSoLuong.Enabled = true;
            textBoxGiaMua.Enabled = true;
            textBoxGiaSale.Enabled = true;
            textBoxVAT.Enabled = true;
            cmbNCC.Enabled = false;
            try
            {
                btnThemCTPN.Enabled = true;
                btnHuyCTPN.Enabled = true;
                rdTatCa.Enabled = false;
                HoaDonNhap hdn = new HoaDonNhap();
                hdn = GetDataPN();
                nhsql.ThemPN(hdn);
            }
            catch
            {
                MessageBox.Show("Không Thể Tạo Phiếu Nhập");
            }
            btnTaoHoaDon.Enabled = false;
        }



        private void cmbNCC_SelectedIndexChanged(object sender, EventArgs e)
        {
            textBoxTenNCC.Text = nhsql.GetNameNCC(cmbNCC);
        }

        private void TextNhanVien(object sender, EventArgs e)
        {
            textBoxTenNV.Text = nhsql.GetNameNV(textBoxMaNV.Text);
        }

        private bool textBoxCheck()
        {
            if (int.Parse(textBoxGiaMua.Text) <= 0)
            {
                MessageBox.Show(textBoxGiaMua.Text + "Không Được Nhỏ Hơn hoặc bằng 0");
                textBoxGiaMua.Text = "0";
                return false;
            }
            if (int.Parse(textBoxGiaSale.Text) <= 0)
            {
                MessageBox.Show(textBoxGiaSale.Text + "Không Được Nhỏ Hơn hoặc bằng 0");
                textBoxGiaSale.Text = "0";
                return false;
            }
            if (int.Parse(textBoxGiaMua.Text) > int.Parse(textBoxGiaSale.Text))
            {
                MessageBox.Show("Giá Mua Không Được Lớn Hơn Giá Bán");
                textBoxGiaSale.Text = textBoxGiaMua.Text;
                return false;
            }
            return true;
        }

        private void textBoxTongCong_TextChanged(object sender, EventArgs e)
        {
            float a = 0;
            for (int i = 0; i < dtgdNhapHang.RowCount; i++)
            {
                float b = float.Parse(dtgdNhapHang.Rows[i].Cells["ThanhTien"].Value.ToString());
                int c = int.Parse(dtgdNhapHang.Rows[i].Cells["Thue"].Value.ToString());
                a += b + b * c / 100;
            }
            textBoxPhaiTra.Text = a.ToString();
        }

        private void textBoxThanhToan_TextChanged(object sender, EventArgs e)
        {
            float a, b;
            if (!float.TryParse(textBoxThanhToan.Text, out b))
            {
                if (textBoxThanhToan.Text != "")
                    MessageBox.Show("Số Tiền Thanh Toán Phải Là Số");
                return;
            }
            a = float.Parse(textBoxPhaiTra.Text) - float.Parse(textBoxThanhToan.Text);
            textBoxNo.Text = a.ToString();
        }

        private void textBoxGiaMua_TextChanged(object sender, EventArgs e)
        {
            int i;
            if (!int.TryParse(textBoxGiaSale.Text, out i))
            {
                textBoxThanhTien.Text = "0";
                if (textBoxGiaSale.Text != "")
                    MessageBox.Show("Giá bán Phải Là Số Nguyên");
                return;
            }
            Sum();
        }
    }
}
